+ // === Lego ========================================================
+ /**
+ * Greate a lego event generator
+ *
+ * @param tune Possible tune
+ *
+ * @return newly allocated generator or null
+ */
+ AliGenerator* Lego(const TString & variant)
+ {
+ fIsLego = true;
+ return 0;
+#if 0
+ TString v(variant);
+ v.ToUpper();
+ v.ReplaceAll("LEGO", "");
+ Info("Setup", "Making Lego event generator (variant: %s)", v.Data());
+
+ AliLegoGenerator* ret = 0;
+ // XYZ varies origin of the particles in two dimensions:
+ // X: o=(0,t1,t2), p=(1,0,0)
+ // Y: o=(t1,0,t2), p=(0,1,0)
+ // Z: o=(t1,t2,0), p=(0,0,1)
+ // PhiZ varies the momentum in two dimensions
+ // o=(0,0,t1) p=(cos(t2),sin(t2),0)
+ // Eta varies momentum in two dimensions
+ // phi=t1
+ // theta=2*atan(exp(-t2))
+ // o=(0,0,0) p=(cos(phi)*sin(theta),sin(phi)*cos(theta),cos(theta))
+ // Base varies in two dimensions
+ // phi=t1
+ // theta=t2
+ // o=(0,0,0) p=(cos(phi)*sin(theta),sin(phi)*cos(theta),cos(theta))
+ if (v.BeginsWith("X") || v.BeginsWith) {
+ const char* c[] = { v(0), '\0' };
+ ret = new AliLegoGeneratorXYZ(c);
+ ret->SetCoor1Range(10,-2,2); // Y, X
+ ret->SetCoor2Range(10,-10,10); // Z
+ }
+ else if (v.BeginsWith("Z")) {
+ ret = new AliLegoGeneratorXYZ("Z");
+ ret->SetCoor1Range(10,-2,2); // X
+ ret->SetCoor2Range(10,-2,2); // Y
+ }
+ else if (v.BeginsWith("PHIZ")) {
+ ret = new AliLegoGeneratorPhiZ();
+ ret->SetCoor1Range(10,-10,10); // Z
+ ret->SetCoor2Range(360,0,360); // phi
+ }
+ else if (v.BeginsWith("ETA")) {
+ ret = new AliLegoGeneratorEta();
+ ret->SetCoor1Range(360,0,360); // phi
+ Double_t aEta = 7;
+ Double_t dEta = (6--4)/200;
+ ret->SetCoor2Range(2*aEta/dEta,-aEta,+aEta); // Eta
+ }
+ else {
+ ret = new AliLegoGenerator();
+ ret->SetCoor1Range(180,0,180); // theta
+ ret->SetCoor1Range(360,0,360); // phi
+ }
+ return ret;
+#endif
+ }
+