ROOT logo
#include "AliMassFitControl.h"

// Two functions now.
// MultYields3 takes a 3D histogram and calls the 2D function MultYields2
// MultYields2 could be called directly if we only have a 2D histogram

void MultYields3(TH3F *PtMassMult, Int_t particleMode, Int_t MultBin, Char_t* label){

  // Leave open possibility to choose different values depending on MultBin - LSB
  Float_t MultLo[1] = {0};
  Float_t MultHi[1] = {300};

  //Make 2D projections from the 3D histogram
  PtMassMult->GetZaxis()->SetRange(MultLo[MultBin],MultHi[MultBin]);
  TH2F* hParMass = (TH2F*)PtMassMult->Project3D("XY");// FIX:MF
  hParMass->SetTitle("PtMass");
  
  //hParMass->Draw(); // Drawing invokes default c1 canvas making it inaccessible in MultYields2 - TO FIX
  MultYields2(hParMass, particleMode,MultBin,label);
  
}

void MultYields2QA(TH2F *hParMass, Int_t particleMode, Int_t ihist,Int_t Nev = 1, Int_t MultBin, Char_t* label){

  hParMass->Draw();
  ////////////////////////// minhist is needed by AliMassFitControl.h (in case the minimum on the parameter's axis is arbitrary value); 
  Double_t minhist = 0;
  minhist = hParMass->GetBinLowEdge(1);
  cout<<" value of the first bin of parameter : " <<minhist << endl;

  // Do .L on command line first
  //gROOT->LoadMacro("macros/PtMassAna2.C");
  /* Modifications to produce a single uncorrected spectrum in a particular mult. bin for K0 or Lambda
     Old ratio code preserved in MultYieldsRatio.C
     Dec 2003 */
  Char_t* part; //for name of particle
  Float_t BR; //branching ratio - check them
  if (particleMode==0){
    part = "K0";
    BR=0.686;
  } else if (particleMode==1){
    part = "Lambda";
    BR=0.639;
  } else if (particleMode==2){
    part = "AntiLambda";
    BR=0.639;
  } else if (particleMode==3){
    part = "Lambda+antiLambda";
    BR=0.639;
  } else if (particleMode==4){
    part = "Xi";
    BR=1.0; // Should be Lam ->p pi Br
  } else if (particleMode ==6){
    part = "Omega";
    BR=1.0; // Should be Lam->p pi  * Om -> K Lam
  }
  


  TString title[1]={"MinimumBias"}; // Not used?
  //Make 2D projections from the 3D histogram
  //Minbias (i.e. everything)
  
  // 1st argument is initial size but array will expand as necessary
  // 2nd arg means can count from 1!
  TObjArray *controllerArray = new TObjArray(10,1); 
  
  //Here probably need switch-case, depending on mult bin and particle
  // LoPt, HiPt, polynomial order, rebinning factor

  /////  LAMBDA and LAMBDA+ANTILAMBDA (Combination)



  if(particleMode == 1 || particleMode == 3 || particleMode == 2){ // Lambda or Lambda+Anti-Lambda
    if(ihist ==0){
      //           controllerArray->AddLast(new AliMassFitControl(0.2,0.3, 2,2, 1.095,1.17)); //1
      //	     controllerArray->AddLast(new AliMassFitControl(0.3,0.4, 2,2, 1.095,1.17)); //2
      //      	     controllerArray->AddLast(new AliMassFitControl(0.4,0.5, 2,2, 1.095,1.17)); //3
      //	     controllerArray->AddLast(new AliMassFitControl(0.5,0.6, 2,2, 1.095,1.17)); //4
      controllerArray->AddLast(new AliMassFitControl(0.6,0.7, 2,2, 1.105,1.14)); //5
      controllerArray->AddLast(new AliMassFitControl(0.7,0.8, 2,2, 1.095,1.14)); //6
      controllerArray->AddLast(new AliMassFitControl(0.8,0.9, 2,2, 1.095,1.14)); //7
      controllerArray->AddLast(new AliMassFitControl(0.9,1.0, 2,2, 1.095,1.14)); //1
      controllerArray->AddLast(new AliMassFitControl(1.0,1.1, 2,2, 1.099,1.14)); //2
      controllerArray->AddLast(new AliMassFitControl(1.1,1.2, 2,2, 1.099,1.14)); //3
      controllerArray->AddLast(new AliMassFitControl(1.2,1.3, 2,2, 1.099,1.14)); //4 
      controllerArray->AddLast(new AliMassFitControl(1.3,1.4, 2,2, 1.099,1.14)); //5
      controllerArray->AddLast(new AliMassFitControl(1.4,1.5, 2,2, 1.095,1.14)); //6
      controllerArray->AddLast(new AliMassFitControl(1.5,1.6, 2,2, 1.095,1.15)); //7
      controllerArray->AddLast(new AliMassFitControl(1.6,1.7, 2,2, 1.095,1.145)); //8
      controllerArray->AddLast(new AliMassFitControl(1.7,1.8, 2,2, 1.095,1.15)); //9
      controllerArray->AddLast(new AliMassFitControl(1.8,1.9, 2,2, 1.095,1.14)); //10
      controllerArray->AddLast(new AliMassFitControl(1.9,2.0, 2,2, 1.095,1.14)); //11
      controllerArray->AddLast(new AliMassFitControl(2.0,2.2, 2,2, 1.095,1.17)); //12
      controllerArray->AddLast(new AliMassFitControl(2.2,2.4, 2,2, 1.095,1.17)); //13
      controllerArray->AddLast(new AliMassFitControl(2.4,2.6, 2,2, 1.095,1.17)); //14
      controllerArray->AddLast(new AliMassFitControl(2.6,2.8, 2,2, 1.095,1.17)); //15
      controllerArray->AddLast(new AliMassFitControl(2.8,3.0, 2,2, 1.095,1.16)); //16
      controllerArray->AddLast(new AliMassFitControl(3.0,3.2, 2,2, 1.095,1.17)); //17
      controllerArray->AddLast(new AliMassFitControl(3.2,3.4, 2,2, 1.095,1.16)); //18
      controllerArray->AddLast(new AliMassFitControl(3.4,3.6, 2,2, 1.095,1.17)); //19
      controllerArray->AddLast(new AliMassFitControl(3.6,3.8, 2,2, 1.095,1.17)); //20
      controllerArray->AddLast(new AliMassFitControl(3.8,4.0, 1,2, 1.090,1.16)); //21
      controllerArray->AddLast(new AliMassFitControl(4.0,4.5, 1,2, 1.095,1.17)); //22
      controllerArray->AddLast(new AliMassFitControl(4.5,5.0, 1,2, 1.083,1.17)); //23
      controllerArray->AddLast(new AliMassFitControl(5.0,5.5, 1,2, 1.083,1.17)); //24  bin05
      controllerArray->AddLast(new AliMassFitControl(5.5,6.5, 1,2, 1.083,1.17)); //25
      controllerArray->AddLast(new AliMassFitControl(6.5,8.0, 0,2, 1.095,1.17)); //33
      //controllerArray->AddLast(new AliMassFitControl(8.0,12.0, 1,2, 1.096,1.17));//34
      

    }
    if(ihist == 1){
      cout << "histogram : " <<1<<endl;
      for(int i = 0; i<49; i++)
	//     for(int i = 0; i<33; i++) //for 05 centrality
	//	controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 2,1, 0.44,0.56));
	controllerArray->AddLast(new AliMassFitControl(minhist,0.1+i*0.2,0.1+(i+1.0)*0.2, 2,1, 1.095,1.15));
    }
    if(ihist == 2){
      cout << "histogram : " <<2<<endl;
      for(int i = 0; i<49; i++)
	//      for(int i = 0; i<33; i++) //for 05 centrality
	//	controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 2,1, 0.44,0.56));
	controllerArray->AddLast(new AliMassFitControl(minhist,0.1+i*0.2,0.1+(i+1.0)*0.2, 2,1, 1.095,1.17));
    }
    if(ihist == 3){
      cout << "histogram : " <<3<<endl;
      for(int i = 0; i<=40; i++)
	//	controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 2,1, 0.44,0.56));
	controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 2,1, 1.095,1.17));
    }
    if(ihist == 4){
      cout << "histogram : " <<4<<endl;
      for(int i = 0; i<=40; i++)
	//	controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 2,1, 0.44,0.56));
	controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 2,1, 1.095,1.17));
    }
    if(ihist == 5){
      cout << "histogram : " <<5<<endl;
      for(int i = 0; i<=33; i++)
	//	if(i==11 || i==15 || i==16)
	//        controllerArray->AddLast(new AliMassFitControl(minhist,0+i*0.03,(i+1)*0.03, 2,1, 0.43,0.57));
	//        else
	//controllerArray->AddLast(new AliMassFitControl(minhist,0+i*0.03,(i+1)*0.03, 2,1, 0.44,0.56));
	controllerArray->AddLast(new AliMassFitControl(minhist,0+i*0.03,(i+1)*0.03, 2,1, 1.095,1.17));   //00
    }
    if(ihist == 6){
      cout << "histogram : " <<6<<endl;
      for(int i = 1; i<40; i++){
	//   if(i==23) 
	controllerArray->AddLast(new AliMassFitControl(minhist,0.998 +i*0.00005,0.998 +(i+1)*0.00005, 2,1, 1.095,1.17));
	/*        if(  i==17 || i==18 || i==23) 
		  controllerArray->AddLast(new AliMassFitControl(minhist,0.998 +i*0.00005,0.998 +(i+1)*0.00005, 2,1, 0.446,0.55));
		  else
		  controllerArray->AddLast(new AliMassFitControl(minhist,0.998 +i*0.00005,0.998 +(i+1)*0.00005, 2,1, 0.44,0.56));
	*/        }
    }
  }
  /// ANTI LAMBDA ---->
//  else if (particleMode == 2){ // Anti-Lambdas
//    controllerArray->AddLast(new AliMassFitControl(5.0,5.5, 0,4, 1.095,1.17));
//    controllerArray->AddLast(new AliMassFitControl(5.5,6.0, 0,6, 1.085,1.17));
//  } // end if anti-Lambda
  else if (particleMode == 0){ // K0s case
    if(ihist == 0){
      //     controllerArray->AddLast(new AliMassFitControl(0.2,0.3, 2,2, 0.45,0.56)); //1
      //controllerArray->AddLast(new AliMassFitControl(0.3,0.4, 2,2, 0.45,0.56)); //2
     controllerArray->AddLast(new AliMassFitControl(0.4,0.5, 1,2, 0.45,0.6)); //3
     controllerArray->AddLast(new AliMassFitControl(0.5,0.6, 1,2, 0.45,0.59)); //4
     controllerArray->AddLast(new AliMassFitControl(0.6,0.7, 2,2, 0.45,0.55)); //5
     controllerArray->AddLast(new AliMassFitControl(0.7,0.8, 2,2, 0.45,0.55)); //6
      controllerArray->AddLast(new AliMassFitControl(0.8,0.9, 2,2, 0.44,0.55)); //7
      controllerArray->AddLast(new AliMassFitControl(0.9,1.0, 2,2, 0.443,0.55)); //8
      controllerArray->AddLast(new AliMassFitControl(1.0,1.1, 2,2, 0.443,0.55)); //9
      controllerArray->AddLast(new AliMassFitControl(1.1,1.2, 2,2, 0.443,0.56)); //10
      controllerArray->AddLast(new AliMassFitControl(1.2,1.3, 2,2, 0.44,0.55)); //11 
      controllerArray->AddLast(new AliMassFitControl(1.3,1.4, 2,2, 0.44,0.56)); //12
      controllerArray->AddLast(new AliMassFitControl(1.4,1.5, 2,2, 0.44,0.56)); //13
      controllerArray->AddLast(new AliMassFitControl(1.5,1.6, 2,2, 0.44,0.55)); //14
      controllerArray->AddLast(new AliMassFitControl(1.6,1.7, 2,2, 0.44,0.55)); //15
      controllerArray->AddLast(new AliMassFitControl(1.7,1.8, 2,2, 0.44,0.55)); //16
      controllerArray->AddLast(new AliMassFitControl(1.8,1.9, 2,2, 0.45,0.55)); //17
      controllerArray->AddLast(new AliMassFitControl(1.9,2.0, 2,2, 0.44,0.55)); //18
      controllerArray->AddLast(new AliMassFitControl(2.0,2.2, 2,2, 0.44,0.55)); //19
      controllerArray->AddLast(new AliMassFitControl(2.2,2.4, 2,2, 0.44,0.55)); //20
      controllerArray->AddLast(new AliMassFitControl(2.4,2.6, 1,2, 0.44,0.54)); //21
      controllerArray->AddLast(new AliMassFitControl(2.6,2.8, 1,2, 0.44,0.54)); //22
      controllerArray->AddLast(new AliMassFitControl(2.8,3.0, 2,2, 0.44,0.54)); //23
      controllerArray->AddLast(new AliMassFitControl(3.0,3.2, 2,2, 0.443,0.54)); //24
      controllerArray->AddLast(new AliMassFitControl(3.2,3.4, 2,2, 0.443,0.54)); //25
      controllerArray->AddLast(new AliMassFitControl(3.4,3.6, 2,2, 0.44,0.56)); //26
      controllerArray->AddLast(new AliMassFitControl(3.6,3.8, 2,2, 0.444,0.56)); //27
      controllerArray->AddLast(new AliMassFitControl(3.8,4.0, 2,2, 0.44,0.56)); //28
      controllerArray->AddLast(new AliMassFitControl(4.0,4.5, 2,2, 0.44,0.56)); //29
      controllerArray->AddLast(new AliMassFitControl(4.5,5.0, 1,2, 0.44,0.56)); //30
      controllerArray->AddLast(new AliMassFitControl(5.0,5.5, 1,2, 0.44,0.55)); //31
      controllerArray->AddLast(new AliMassFitControl(5.5,6.5, 1,2, 0.44,0.56)); //32
              controllerArray->AddLast(new AliMassFitControl(6.5,8.0, 1,2, 0.43,0.56)); //33
        controllerArray->AddLast(new AliMassFitControl(8.0,12.0, 0,4, 0.42,0.57));//34
      
    }
    if(ihist == 1){
      cout << "histogram : " <<1<<endl;
      //      for(int i = 0; i<49; i++)
      // for(int i = 0; i<=20; i++) //for pt3
	     for(int i = 0; i<33; i++) //for 05 centrality
	//	controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 2,1, 0.44,0.56));
        if(i==0)
        controllerArray->AddLast(new AliMassFitControl(minhist,0.1+i*0.2,0.1+(i+1.0)*0.2, 2,1, 0.443,0.54));
        else
        if(i>=25)
        controllerArray->AddLast(new AliMassFitControl(minhist,0.1+i*0.2,0.1+(i+1.0)*0.2, 1,1, 0.443,0.53));
        else
        if(i==24)
        controllerArray->AddLast(new AliMassFitControl(minhist,0.1+i*0.2,0.1+(i+1.0)*0.2, 1,1, 0.45,0.57));
        
        else
	controllerArray->AddLast(new AliMassFitControl(minhist,0.1+i*0.2,0.1+(i+1.0)*0.2, 2,1, 0.45,0.56));
    }
    if(ihist == 2){
      cout << "histogram : " <<2<<endl;
      //      for(int i = 0; i<=20; i++){ //for pt3
	//      for(int i = 0; i<42; i++){
      for(int i = 0; i<33; i++){ //for 05 centrality
	//	controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 2,1, 0.44,0.56));
        if(i<=5)controllerArray->AddLast(new AliMassFitControl(minhist,0.1+i*0.2,0.1+(i+1.0)*0.2, 2,1, 0.445,0.55));
        else
        if(i>25)
        controllerArray->AddLast(new AliMassFitControl(minhist,0.1+i*0.2,0.1+(i+1.0)*0.2, 1,1, 0.444,0.56));
        else
	  controllerArray->AddLast(new AliMassFitControl(minhist,0.1+i*0.2,0.1+(i+1.0)*0.2, 2,1, 0.445,0.56));
      }
    }
    if(ihist == 3){
      cout << "histogram : " <<3<<endl;
      //for(int i = 0; i<=28; i++) //bin05
      for(int i = 1; i<=20; i++) //for pt3
	// for(int i = 0; i<=40; i++)
	//	controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 2,1, 0.44,0.56));
        if(i==2 || i==4 || i==5)
        controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 2,1, 0.442,0.535));
        else if(i<2)
	controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 2,1, 0.442,0.53));
        else if(i>=3)
	controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 2,1, 0.443,0.55));
         
        else
	controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 2,1, 0.443,0.54));
    }
    if(ihist == 4){
      cout << "histogram : " <<4<<endl;
      for(int i = 0; i<=40; i++)
	//	controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 2,1, 0.44,0.56));
	if(i<4)controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 1,1, 0.443,0.56));
        else if (i >=4 && i<=6)
        controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 1,1, 0.443,0.547));
         else if (i==10 || i==11)
        controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 1,1, 0.443,0.544));
         else if (i==26)
        controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 1,1, 0.443,0.544));
         else if (i==29 || i == 34)
        controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 1,1, 0.454,0.544));
        else
        controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 1,1, 0.445,0.55));
    }
    if(ihist == 5){
      cout << "histogram : " <<5<<endl;
      for(int i = 0; i<25; i++) //for pt3
	//      for(int i = 0; i<=32; i++)
	//	if(i==11 || i==15 || i==16)
	//        controllerArray->AddLast(new AliMassFitControl(minhist,0+i*0.03,(i+1)*0.03, 2,1, 0.43,0.57));
	//        else
	//controllerArray->AddLast(new AliMassFitControl(minhist,0+i*0.03,(i+1)*0.03, 2,1, 0.44,0.56));
      if(i<=5) controllerArray->AddLast(new AliMassFitControl(minhist,0+i*0.03,(i+1)*0.03, 2,1, 0.443,0.55));   //00
      else
      if(i>=6 && i<=9) controllerArray->AddLast(new AliMassFitControl(minhist,0+i*0.03,(i+1)*0.03, 2,1, 0.44,0.55));   //00
      else
      if(i>=21) controllerArray->AddLast(new AliMassFitControl(minhist,0+i*0.03,(i+1)*0.03, 1,1, 0.44,0.55));   //00
      else
	controllerArray->AddLast(new AliMassFitControl(minhist,0+i*0.03,(i+1)*0.03, 2,1, 0.43,0.56));

    }
    if(ihist == 6){
      cout << "histogram : " <<6<<endl;
            for(int i = 18; i<40; i++){ //for pt3
      //  for(int i = 1; i<40; i++){
	//   if(i==23) 
	        if(  i==15 || i==0) 
		  controllerArray->AddLast(new AliMassFitControl(minhist,0.998 +i*0.00005,0.998 +(i+1)*0.00005, 1,1, 0.444,0.56));
                else if(  i==10 || i==11) 
		  controllerArray->AddLast(new AliMassFitControl(minhist,0.998 +i*0.00005,0.998 +(i+1)*0.00005, 1,1, 0.444,0.56));
	        else if(  i==20 || i==21) 
		  controllerArray->AddLast(new AliMassFitControl(minhist,0.998 +i*0.00005,0.998 +(i+1)*0.00005, 1,1, 0.445,0.56));
		else if (i<=22)
		  controllerArray->AddLast(new AliMassFitControl(minhist,0.998 +i*0.00005,0.998 +(i+1)*0.00005, 1,1, 0.445,0.56));
		else if (i>22 && i<=24)
		  controllerArray->AddLast(new AliMassFitControl(minhist,0.998 +i*0.00005,0.998 +(i+1)*0.00005, 1,1, 0.445,0.555));
		else if (i>24 && i<29)
		  controllerArray->AddLast(new AliMassFitControl(minhist,0.998 +i*0.00005,0.998 +(i+1)*0.00005, 1,1, 0.44,0.53));
		else if (i>29)
		  controllerArray->AddLast(new AliMassFitControl(minhist,0.998 +i*0.00005,0.998 +(i+1)*0.00005, 1,1, 0.445,0.54));
			        else if( i>31 ) 
		controllerArray->AddLast(new AliMassFitControl(minhist,0.998 +i*0.00005,0.998 +(i+1)*0.00005, 2,1, 0.44,0.54));

                else
                  	controllerArray->AddLast(new AliMassFitControl(minhist,0.998 +i*0.00005,0.998 +(i+1)*0.00005, 2,1, 0.445,0.55));
			 }
    }
  }  else if (particleMode == 4) { //Xi case
    //controllerArray->AddLast(new AliMassFitControl(0.5,0.7, 1,1, 1.28,1.45)); //signal not visible with 
    controllerArray->AddLast(new AliMassFitControl(0.7,0.9, 1,1, 1.285,1.45));
    controllerArray->AddLast(new AliMassFitControl(0.9,1.1, 1,1, 1.285,1.45));
    controllerArray->AddLast(new AliMassFitControl(1.1,1.3, 1,1, 1.27,1.45));
    controllerArray->AddLast(new AliMassFitControl(1.3,1.5, 1,1, 1.27,1.45));
    controllerArray->AddLast(new AliMassFitControl(1.5,1.7, 1,1, 1.27,1.45));
    controllerArray->AddLast(new AliMassFitControl(1.7,2.0, 1,1, 1.27,1.45));
    controllerArray->AddLast(new AliMassFitControl(2.0,2.5, 1,1, 1.27,1.44));
    controllerArray->AddLast(new AliMassFitControl(2.5,3.0, 1,1, 1.27,1.45));
    controllerArray->AddLast(new AliMassFitControl(3.0,3.5, 1,1, 1.27,1.44));
    controllerArray->AddLast(new AliMassFitControl(3.5,4.0, 1,1, 1.27,1.45));
    controllerArray->AddLast(new AliMassFitControl(4.0,4.5, 2,1, 1.27,1.44));
    controllerArray->AddLast(new AliMassFitControl(4.5,5.0, 2,1, 1.27,1.45));
  }
  controllerArray->Sort();

  // Make the proper label to pass in for use in labelling the diagnostics
  // saved canvas files and histos
  Char_t fulllabel[80];
  //sprintf(fulllabel,"%s%s",title[MultBin].Data(),label);
  sprintf(fulllabel,"%s",label);

  //Slice up projection into mass histograms to extract yield
  TH1F* hYield = (TH1F*)PtMassAna2(hParMass,particleMode,ihist,controllerArray->GetEntries(),controllerArray,fulllabel);


  // CORRECTIONS Nev -comming from "FitSpectrum.C" (events with Zvertex < |10cm|) 
  hYield->Scale(1.0/Nev); //Divide by the number of events

  //hYield->Scale(Veff[MultBin]); //Multiply by the vertex efficiency effectively increaing number of events 
  //(since Veff<1) therefore decreases yield
  //hYield->Scale(1.0/BR);  //Divide by branching ratio (again increases yield since BR<1)
  //hYield->Scale(1.0/(2*TMath::Pi())); // Always plot 1/2pi ...

  Char_t yieldTitle[80];
  //sprintf(yieldTitle,"Uncorrected %s yield: %s",part,title[MultBin].Data());
  sprintf(yieldTitle,"Uncorrected %s yield",part);
  hYield->SetTitle(yieldTitle);
  if(ihist == 0)hYield->SetXTitle("p_{t} / [GeV/c]");
  if(ihist == 1)hYield->SetXTitle("DCA / [cm]");
  if(ihist == 2)hYield->SetXTitle("DCA / [cm]");
  if(ihist == 3)hYield->SetXTitle("Radius / [cm]");
  if(ihist == 4)hYield->SetXTitle("Decay Length / [cm]");
  if(ihist == 5)hYield->SetXTitle("V0 Daughters / [cm]");
  if(ihist == 6)hYield->SetXTitle("Cos of pointing angle");
  hYield->SetYTitle("1/Nev.dN/dp_{t}");

  // Create plots

  Char_t fileNameBase[80];
  if(ihist == 0)sprintf(fileNameBase,"Masses%s",part);
  else sprintf(fileNameBase,"Masses%s",label);
  Char_t fileNamePng[80];
  sprintf(fileNamePng,"%s.png",fileNameBase);
  Char_t fileNameEps[80];
  sprintf(fileNameEps,"%s.eps",fileNameBase);
  Char_t fileNamePdf[80];
  sprintf(fileNamePdf,"%s.pdf",fileNameBase);

  c1->SaveAs(fileNamePng);
  c1->SaveAs(fileNameEps);
  c1->SaveAs(fileNamePdf);

  //c1->Clear();

  //c1->SetLogy();
  TCanvas *cYield = new TCanvas("Yield","Corrected Yield",600,400);
  cYield->cd();
  //cYield->SetLogy();
  hYield->SetStats(kFALSE);
  hYield->Draw();
  // cYield->SetLogy();
  cYield->Update();

  //  hRC_MB->SetMarkerStyle(20);
  //  hRC_MB->SetMarkerColor(4);
  //  hRC_MB->Scale(NBinMB/NBin3);
  Char_t fnametext[80];
  if(ihist == 0)sprintf(fnametext,"Yield%s",part);
  else sprintf(fnametext,"Yield%s",label);
  Char_t fnamePng[80];
  sprintf(fnamePng,"%s.png",fnametext);
  c1->SaveAs(fnamePng);
  Char_t fnameEps[80];
  sprintf(fnameEps,"%s.eps",fnametext);
  c1->SaveAs(fnameEps);

  // This section for yield scaled by number of binary collisions.
  // Could add array of values and do scaling according to 'MultBin' index
  TH1F* hScYield = hYield->Clone("ScYield");
  Char_t scYieldTitle[80];
  //sprintf(scYieldTitle,"<N_{bin}> Scaled %s",hYield->GetTitle());
  //hScYield->SetTitle(scYieldTitle);
  //SCALING for scaled yield only  divide by mean Nbin (scaled yield is therefore smaller)
  //hScYield->Scale(1/NBin[MultBin]);

  Char_t fnameRoot[80];
  sprintf(fnameRoot,"%s.root",fnametext);
  TFile *YieldFile = new TFile(fnameRoot,"RECREATE");
  hYield->Write();
  hScYield->Write();
  YieldFile->Close();

  controllerArray->Delete();
}
 MultYields2QA.C:1
 MultYields2QA.C:2
 MultYields2QA.C:3
 MultYields2QA.C:4
 MultYields2QA.C:5
 MultYields2QA.C:6
 MultYields2QA.C:7
 MultYields2QA.C:8
 MultYields2QA.C:9
 MultYields2QA.C:10
 MultYields2QA.C:11
 MultYields2QA.C:12
 MultYields2QA.C:13
 MultYields2QA.C:14
 MultYields2QA.C:15
 MultYields2QA.C:16
 MultYields2QA.C:17
 MultYields2QA.C:18
 MultYields2QA.C:19
 MultYields2QA.C:20
 MultYields2QA.C:21
 MultYields2QA.C:22
 MultYields2QA.C:23
 MultYields2QA.C:24
 MultYields2QA.C:25
 MultYields2QA.C:26
 MultYields2QA.C:27
 MultYields2QA.C:28
 MultYields2QA.C:29
 MultYields2QA.C:30
 MultYields2QA.C:31
 MultYields2QA.C:32
 MultYields2QA.C:33
 MultYields2QA.C:34
 MultYields2QA.C:35
 MultYields2QA.C:36
 MultYields2QA.C:37
 MultYields2QA.C:38
 MultYields2QA.C:39
 MultYields2QA.C:40
 MultYields2QA.C:41
 MultYields2QA.C:42
 MultYields2QA.C:43
 MultYields2QA.C:44
 MultYields2QA.C:45
 MultYields2QA.C:46
 MultYields2QA.C:47
 MultYields2QA.C:48
 MultYields2QA.C:49
 MultYields2QA.C:50
 MultYields2QA.C:51
 MultYields2QA.C:52
 MultYields2QA.C:53
 MultYields2QA.C:54
 MultYields2QA.C:55
 MultYields2QA.C:56
 MultYields2QA.C:57
 MultYields2QA.C:58
 MultYields2QA.C:59
 MultYields2QA.C:60
 MultYields2QA.C:61
 MultYields2QA.C:62
 MultYields2QA.C:63
 MultYields2QA.C:64
 MultYields2QA.C:65
 MultYields2QA.C:66
 MultYields2QA.C:67
 MultYields2QA.C:68
 MultYields2QA.C:69
 MultYields2QA.C:70
 MultYields2QA.C:71
 MultYields2QA.C:72
 MultYields2QA.C:73
 MultYields2QA.C:74
 MultYields2QA.C:75
 MultYields2QA.C:76
 MultYields2QA.C:77
 MultYields2QA.C:78
 MultYields2QA.C:79
 MultYields2QA.C:80
 MultYields2QA.C:81
 MultYields2QA.C:82
 MultYields2QA.C:83
 MultYields2QA.C:84
 MultYields2QA.C:85
 MultYields2QA.C:86
 MultYields2QA.C:87
 MultYields2QA.C:88
 MultYields2QA.C:89
 MultYields2QA.C:90
 MultYields2QA.C:91
 MultYields2QA.C:92
 MultYields2QA.C:93
 MultYields2QA.C:94
 MultYields2QA.C:95
 MultYields2QA.C:96
 MultYields2QA.C:97
 MultYields2QA.C:98
 MultYields2QA.C:99
 MultYields2QA.C:100
 MultYields2QA.C:101
 MultYields2QA.C:102
 MultYields2QA.C:103
 MultYields2QA.C:104
 MultYields2QA.C:105
 MultYields2QA.C:106
 MultYields2QA.C:107
 MultYields2QA.C:108
 MultYields2QA.C:109
 MultYields2QA.C:110
 MultYields2QA.C:111
 MultYields2QA.C:112
 MultYields2QA.C:113
 MultYields2QA.C:114
 MultYields2QA.C:115
 MultYields2QA.C:116
 MultYields2QA.C:117
 MultYields2QA.C:118
 MultYields2QA.C:119
 MultYields2QA.C:120
 MultYields2QA.C:121
 MultYields2QA.C:122
 MultYields2QA.C:123
 MultYields2QA.C:124
 MultYields2QA.C:125
 MultYields2QA.C:126
 MultYields2QA.C:127
 MultYields2QA.C:128
 MultYields2QA.C:129
 MultYields2QA.C:130
 MultYields2QA.C:131
 MultYields2QA.C:132
 MultYields2QA.C:133
 MultYields2QA.C:134
 MultYields2QA.C:135
 MultYields2QA.C:136
 MultYields2QA.C:137
 MultYields2QA.C:138
 MultYields2QA.C:139
 MultYields2QA.C:140
 MultYields2QA.C:141
 MultYields2QA.C:142
 MultYields2QA.C:143
 MultYields2QA.C:144
 MultYields2QA.C:145
 MultYields2QA.C:146
 MultYields2QA.C:147
 MultYields2QA.C:148
 MultYields2QA.C:149
 MultYields2QA.C:150
 MultYields2QA.C:151
 MultYields2QA.C:152
 MultYields2QA.C:153
 MultYields2QA.C:154
 MultYields2QA.C:155
 MultYields2QA.C:156
 MultYields2QA.C:157
 MultYields2QA.C:158
 MultYields2QA.C:159
 MultYields2QA.C:160
 MultYields2QA.C:161
 MultYields2QA.C:162
 MultYields2QA.C:163
 MultYields2QA.C:164
 MultYields2QA.C:165
 MultYields2QA.C:166
 MultYields2QA.C:167
 MultYields2QA.C:168
 MultYields2QA.C:169
 MultYields2QA.C:170
 MultYields2QA.C:171
 MultYields2QA.C:172
 MultYields2QA.C:173
 MultYields2QA.C:174
 MultYields2QA.C:175
 MultYields2QA.C:176
 MultYields2QA.C:177
 MultYields2QA.C:178
 MultYields2QA.C:179
 MultYields2QA.C:180
 MultYields2QA.C:181
 MultYields2QA.C:182
 MultYields2QA.C:183
 MultYields2QA.C:184
 MultYields2QA.C:185
 MultYields2QA.C:186
 MultYields2QA.C:187
 MultYields2QA.C:188
 MultYields2QA.C:189
 MultYields2QA.C:190
 MultYields2QA.C:191
 MultYields2QA.C:192
 MultYields2QA.C:193
 MultYields2QA.C:194
 MultYields2QA.C:195
 MultYields2QA.C:196
 MultYields2QA.C:197
 MultYields2QA.C:198
 MultYields2QA.C:199
 MultYields2QA.C:200
 MultYields2QA.C:201
 MultYields2QA.C:202
 MultYields2QA.C:203
 MultYields2QA.C:204
 MultYields2QA.C:205
 MultYields2QA.C:206
 MultYields2QA.C:207
 MultYields2QA.C:208
 MultYields2QA.C:209
 MultYields2QA.C:210
 MultYields2QA.C:211
 MultYields2QA.C:212
 MultYields2QA.C:213
 MultYields2QA.C:214
 MultYields2QA.C:215
 MultYields2QA.C:216
 MultYields2QA.C:217
 MultYields2QA.C:218
 MultYields2QA.C:219
 MultYields2QA.C:220
 MultYields2QA.C:221
 MultYields2QA.C:222
 MultYields2QA.C:223
 MultYields2QA.C:224
 MultYields2QA.C:225
 MultYields2QA.C:226
 MultYields2QA.C:227
 MultYields2QA.C:228
 MultYields2QA.C:229
 MultYields2QA.C:230
 MultYields2QA.C:231
 MultYields2QA.C:232
 MultYields2QA.C:233
 MultYields2QA.C:234
 MultYields2QA.C:235
 MultYields2QA.C:236
 MultYields2QA.C:237
 MultYields2QA.C:238
 MultYields2QA.C:239
 MultYields2QA.C:240
 MultYields2QA.C:241
 MultYields2QA.C:242
 MultYields2QA.C:243
 MultYields2QA.C:244
 MultYields2QA.C:245
 MultYields2QA.C:246
 MultYields2QA.C:247
 MultYields2QA.C:248
 MultYields2QA.C:249
 MultYields2QA.C:250
 MultYields2QA.C:251
 MultYields2QA.C:252
 MultYields2QA.C:253
 MultYields2QA.C:254
 MultYields2QA.C:255
 MultYields2QA.C:256
 MultYields2QA.C:257
 MultYields2QA.C:258
 MultYields2QA.C:259
 MultYields2QA.C:260
 MultYields2QA.C:261
 MultYields2QA.C:262
 MultYields2QA.C:263
 MultYields2QA.C:264
 MultYields2QA.C:265
 MultYields2QA.C:266
 MultYields2QA.C:267
 MultYields2QA.C:268
 MultYields2QA.C:269
 MultYields2QA.C:270
 MultYields2QA.C:271
 MultYields2QA.C:272
 MultYields2QA.C:273
 MultYields2QA.C:274
 MultYields2QA.C:275
 MultYields2QA.C:276
 MultYields2QA.C:277
 MultYields2QA.C:278
 MultYields2QA.C:279
 MultYields2QA.C:280
 MultYields2QA.C:281
 MultYields2QA.C:282
 MultYields2QA.C:283
 MultYields2QA.C:284
 MultYields2QA.C:285
 MultYields2QA.C:286
 MultYields2QA.C:287
 MultYields2QA.C:288
 MultYields2QA.C:289
 MultYields2QA.C:290
 MultYields2QA.C:291
 MultYields2QA.C:292
 MultYields2QA.C:293
 MultYields2QA.C:294
 MultYields2QA.C:295
 MultYields2QA.C:296
 MultYields2QA.C:297
 MultYields2QA.C:298
 MultYields2QA.C:299
 MultYields2QA.C:300
 MultYields2QA.C:301
 MultYields2QA.C:302
 MultYields2QA.C:303
 MultYields2QA.C:304
 MultYields2QA.C:305
 MultYields2QA.C:306
 MultYields2QA.C:307
 MultYields2QA.C:308
 MultYields2QA.C:309
 MultYields2QA.C:310
 MultYields2QA.C:311
 MultYields2QA.C:312
 MultYields2QA.C:313
 MultYields2QA.C:314
 MultYields2QA.C:315
 MultYields2QA.C:316
 MultYields2QA.C:317
 MultYields2QA.C:318
 MultYields2QA.C:319
 MultYields2QA.C:320
 MultYields2QA.C:321
 MultYields2QA.C:322
 MultYields2QA.C:323
 MultYields2QA.C:324
 MultYields2QA.C:325
 MultYields2QA.C:326
 MultYields2QA.C:327
 MultYields2QA.C:328
 MultYields2QA.C:329
 MultYields2QA.C:330
 MultYields2QA.C:331
 MultYields2QA.C:332
 MultYields2QA.C:333
 MultYields2QA.C:334
 MultYields2QA.C:335
 MultYields2QA.C:336
 MultYields2QA.C:337
 MultYields2QA.C:338
 MultYields2QA.C:339
 MultYields2QA.C:340
 MultYields2QA.C:341
 MultYields2QA.C:342
 MultYields2QA.C:343
 MultYields2QA.C:344
 MultYields2QA.C:345
 MultYields2QA.C:346
 MultYields2QA.C:347
 MultYields2QA.C:348
 MultYields2QA.C:349
 MultYields2QA.C:350
 MultYields2QA.C:351
 MultYields2QA.C:352
 MultYields2QA.C:353
 MultYields2QA.C:354
 MultYields2QA.C:355
 MultYields2QA.C:356
 MultYields2QA.C:357
 MultYields2QA.C:358
 MultYields2QA.C:359
 MultYields2QA.C:360
 MultYields2QA.C:361
 MultYields2QA.C:362
 MultYields2QA.C:363
 MultYields2QA.C:364
 MultYields2QA.C:365
 MultYields2QA.C:366
 MultYields2QA.C:367
 MultYields2QA.C:368
 MultYields2QA.C:369
 MultYields2QA.C:370
 MultYields2QA.C:371
 MultYields2QA.C:372
 MultYields2QA.C:373
 MultYields2QA.C:374
 MultYields2QA.C:375
 MultYields2QA.C:376
 MultYields2QA.C:377
 MultYields2QA.C:378
 MultYields2QA.C:379
 MultYields2QA.C:380
 MultYields2QA.C:381
 MultYields2QA.C:382
 MultYields2QA.C:383
 MultYields2QA.C:384
 MultYields2QA.C:385
 MultYields2QA.C:386
 MultYields2QA.C:387
 MultYields2QA.C:388
 MultYields2QA.C:389
 MultYields2QA.C:390
 MultYields2QA.C:391
 MultYields2QA.C:392
 MultYields2QA.C:393
 MultYields2QA.C:394
 MultYields2QA.C:395
 MultYields2QA.C:396
 MultYields2QA.C:397
 MultYields2QA.C:398
 MultYields2QA.C:399
 MultYields2QA.C:400
 MultYields2QA.C:401
 MultYields2QA.C:402
 MultYields2QA.C:403
 MultYields2QA.C:404
 MultYields2QA.C:405
 MultYields2QA.C:406
 MultYields2QA.C:407
 MultYields2QA.C:408
 MultYields2QA.C:409
 MultYields2QA.C:410
 MultYields2QA.C:411
 MultYields2QA.C:412
 MultYields2QA.C:413
 MultYields2QA.C:414
 MultYields2QA.C:415
 MultYields2QA.C:416
 MultYields2QA.C:417