+AliGenerator* CocktailSignals() {
+
+ comment = comment.Append("Cocktail of various signals");
+
+ AliGenCocktail *cocktail = new AliGenCocktail();
+
+ // 1) Dummy generation of positive pions, to keep memory of the production vertex
+ AliGenBox *dummyPionPos = new AliGenBox(20);
+ dummyPionPos->SetYRange(-0.5, 0.5);
+ dummyPionPos->SetPtRange(1., 10.);
+ dummyPionPos->SetPart(211);
+ cocktail->AddGenerator(dummyPionPos,"dummyPionPos",1);
+
+ // 2) Dummy generation of negative pions, to keep memory of the production vertex
+ AliGenBox *dummyPionNeg = new AliGenBox(20);
+ dummyPionNeg->SetYRange(-0.5, 0.5);
+ dummyPionNeg->SetPtRange(1., 10.);
+ dummyPionNeg->SetPart(-211);
+ cocktail->AddGenerator(dummyPionNeg,"dummyPionNeg",1);
+
+ // 3) Generator for the custom signal
+ AliGenerator* signalGen = 0x0;
+ if (signal == kPythia6) signalGen = MbPythia();
+ else if (signal == kPythiaPerugia0) signalGen = MbPythiaTunePerugia0();
+ else if (signal == kHijing) signalGen = Hijing();
+ else if (signal == kHijing2500) signalGen = Hijing2500();
+ else if (signal == kGenBox) signalGen = GenBox();
+ else if (signal == kGenMuonLMR) signalGen = GenMuonLMR();
+ else if (signal == kGenParamJpsi) signalGen = GenParamJpsi();
+ else if (signal == kGenCorrHF) signalGen = GenCorrHF();
+ else if (signal == kGenPionKaon) signalGen = GenParamPionKaon();
+ else if (signal == kPythiaPerugia0BtoJpsi2mu) signalGen = MbPythiaTunePerugia0BtoJpsi2mu();
+ cocktail->AddGenerator(signalGen, "signal", 1);
+
+ cocktail->SetTrackingFlag(1);
+
+ return cocktail;
+
+}
+
+//====================================================================================================================================================
+