21
14.9.99 Maria Hoerndl, ALPHA++ 1 My work project Add simple kinematics functions and then more complex routines like Thrust and Jet algorithms to the ALPHA++ Analysis Package, and implement the new classes required by these routines Write an analysis program to test the new algorithms Compare the results of ALPHA and ALPHA++

14.9.99Maria Hoerndl, ALPHA++1 My work project Add simple kinematics functions and then more complex routines like Thrust and Jet algorithms to the ALPHA++

Embed Size (px)

Citation preview

Page 1: 14.9.99Maria Hoerndl, ALPHA++1 My work project Add simple kinematics functions and then more complex routines like Thrust and Jet algorithms to the ALPHA++

14.9.99 Maria Hoerndl, ALPHA++ 1

My work project

Add simple kinematics functions and then morecomplex routines like Thrust and Jet algorithms to the ALPHA++ Analysis Package, and implement the new classes required by these routines Write an analysis program to test the new algorithms

Compare the results of ALPHA and ALPHA++

Page 2: 14.9.99Maria Hoerndl, ALPHA++1 My work project Add simple kinematics functions and then more complex routines like Thrust and Jet algorithms to the ALPHA++

14.9.99 Maria Hoerndl, ALPHA++ 2

ALPHA++ Class Diagram

Page 3: 14.9.99Maria Hoerndl, ALPHA++1 My work project Add simple kinematics functions and then more complex routines like Thrust and Jet algorithms to the ALPHA++

14.9.99 Maria Hoerndl, ALPHA++ 3

What has changed?

AlphaBanks: new container ObjectV() for all AlObjects new objects created during run time (AlJet, AlThrust) are appended to the ObjectV() vector

STL and CLHEP modules are used

AlObject and QvecBase: the HepLorentzVector _A4V and float _qch contain all important data now new functions: HepLorentzVector A4V() void setA4V(float x, float y, float z, float e); void setA4V(HepLorentzVector vec); void setQCH(float qch);

old functions QP(), QX(), QY(), QZ(), QE(), QM() and QCH()still available

Lock is implemented: int isLocked(); void Lock();

Page 4: 14.9.99Maria Hoerndl, ALPHA++1 My work project Add simple kinematics functions and then more complex routines like Thrust and Jet algorithms to the ALPHA++

14.9.99 Maria Hoerndl, ALPHA++ 4

What has changed?

QvecBase: kinematics utility routines are added float QCT(); // cos (polar angle) float QPH(); // phi float QPT(); // transverse momentum float QBETA(); // beta float QGAMMA(); // gamma float QDMSQ(QvecBase j); // mass^2 of 4-mom difference float QDOT3(QvecBase j); //3 dim scalar product float QDECA2(QvecBase j); // cos (decay angle) HepDouble DECAY_ANG(QvecBase j); // cos (decay angle) QvecBase add(QvecBase j); // add four-momenta ….. …..

Page 5: 14.9.99Maria Hoerndl, ALPHA++1 My work project Add simple kinematics functions and then more complex routines like Thrust and Jet algorithms to the ALPHA++

14.9.99 Maria Hoerndl, ALPHA++ 5

Class AlThrust

class AlThrust: public QvecBase { public: AlThrust(); // default constructor ALEPHTYPE TYPE() {return ALTHRUST;} Hep3Vector getThrustDirection(); float getThrustValue(); };

Page 6: 14.9.99Maria Hoerndl, ALPHA++1 My work project Add simple kinematics functions and then more complex routines like Thrust and Jet algorithms to the ALPHA++

14.9.99 Maria Hoerndl, ALPHA++ 6

Class AlJetclass AlJet: public QvecBase {

public: AlJet(); // default constructor AlJet(const AlJet& oldAj); // copy constructor

ALEPHTYPE TYPE() {return ALJET;} vector<AlObject*>& getObjects(); void addObject(AlObject* a); void setScheme(int s); int getScheme();

private: vector<AlObject*> _objects; // objects of which jet was built int _scheme; // recombination scheme };

Page 7: 14.9.99Maria Hoerndl, ALPHA++1 My work project Add simple kinematics functions and then more complex routines like Thrust and Jet algorithms to the ALPHA++

14.9.99 Maria Hoerndl, ALPHA++ 7

Class AlephAlgoclass AlephAlgo { public: AlephAlgo(); AlephAlgo(AlphaBanks* alpha); void setAlphaBanks(AlphaBanks* alpha); AlphaBanks* getAlphaBanks();

//jet algorithms vector<AlJet> DurhamJn(int Scheme, float Ycut, ALEPHTYPE type); vector<AlJet> DurhamJn(int Scheme, float Ycut, vector<AlObject*> Pext); vector<float> DurhamYn(int Scheme, ALEPHTYPE type); vector<float> DurhamYn(int Scheme, vector<AlObject*> Pext);

//thrust algorithms AlThrust AThrust(ALEPHTYPE type); AlThrust AThrust(vector<AlObject*> Pext);

private: AlphaBanks* _alpha;};

Page 8: 14.9.99Maria Hoerndl, ALPHA++1 My work project Add simple kinematics functions and then more complex routines like Thrust and Jet algorithms to the ALPHA++

14.9.99 Maria Hoerndl, ALPHA++ 8

Example Analysis Program

which data? class 16 events are used only Eflw objects (type <= 5) conventional criteria for the selection of charged tracks and event selection purpose of program? Calculate the jet-rates for 10 different values of Ycut further analysis of the three-jet events for Ycut = 0.01: store multiplicities, inter-jet-angles, energies and momenta for the three jet events, which are sorted in order of decreasing energies, in an Ntuple using an Hbook wrapper

Page 9: 14.9.99Maria Hoerndl, ALPHA++1 My work project Add simple kinematics functions and then more complex routines like Thrust and Jet algorithms to the ALPHA++

14.9.99 Maria Hoerndl, ALPHA++ 9

Example Analysis program

#include "AlephAlgo.h”

void AlephExManager::UserInit(){ // book an ntuple Hbookn(500,"myNtuple",ntags,mytags); }

void AlephExManager::UserEvent(AlphaBanks& bb){ typedef AlphaBanks::AlObjectVec::iterator ObjItr; AlephAlgo a(&bb);

// only EFLOW objects are used, therefore lock all the other objects for(ObjItr it = bb.ObjectV().begin(); it < bb.ObjectV().end(); it++) { if ((*it)->TYPE() != EFLOW)

{ (*it)->Lock(); } }

Page 10: 14.9.99Maria Hoerndl, ALPHA++1 My work project Add simple kinematics functions and then more complex routines like Thrust and Jet algorithms to the ALPHA++

14.9.99 Maria Hoerndl, ALPHA++ 10

Example Analysis program

for(ObjItr it = bb.ObjectV().begin(); it < bb.ObjectV().end(); it++) { if ((*it)->isLocked() == 0) { int type = ((AlEflw*)(*it))->getEfType(); QvecBase* tmp = (QvecBase*)(*it); // selection of good charged tracks if (type <=3) { // calculate Ntpc, ptch, costheta, d0, z0 // lock if bad if ((d0 > 2.) || (z0 > 5.) || (fabs(costheta) > 0.94) || (ptch < 0.2) || (Ntpc < 4)) { (*it)->Lock(); } } // all Eflow objects with eflow type > 5 are locked if (type > 5) { (*it)->Lock(); } } }

Page 11: 14.9.99Maria Hoerndl, ALPHA++1 My work project Add simple kinematics functions and then more complex routines like Thrust and Jet algorithms to the ALPHA++

14.9.99 Maria Hoerndl, ALPHA++ 11

Example Analysis program

// calculate Nchgood and Echgood int Nchgood = 0; int Echgood = 0.; for(ObjItr it = bb.ObjectV().begin(); it < bb.ObjectV().end(); it++) { if ((*it)->isLocked() == 0)

{ int type = ((AlEflw*)(*it))->getEfType(); if (type <=3) { Nchgood ++; Echgood += (*it)->QE(); } } }

//compute thrust axis with all good Eflows AlThrust theThrust = a.AThrust(EFLOW); Hep3Vector theThrAxis = theThrust.getThrustDirection(); float costhr = theThrAxis.cosTheta();

Page 12: 14.9.99Maria Hoerndl, ALPHA++1 My work project Add simple kinematics functions and then more complex routines like Thrust and Jet algorithms to the ALPHA++

14.9.99 Maria Hoerndl, ALPHA++ 12

Example Analysis program

if ((Nchgood >=5) && (Echgood >=15.) && (fabs(costhr) < 0.82)) { // store all not locked objects in the vector<AlObject*> selobj; vector<AlObject*> selobj; for(ObjItr it = bb.ObjectV().begin(); it < bb.ObjectV().end(); it++) { if (((*it)->isLocked() == 0) && ((*it)->TYPE() == EFLOW)) { selobj.push_back(*it); } }

// compute the different jet-rates as a function of Ycut; for(int i=0; i<10; i++) { vector<AlJet> Jn = a.DurhamJn(1, Ycut[i], selobj); jetr = Jn.size(); // fill jetr into Ntuple // take three jet events for Ycut = 0.01 if (( i == 5) && ( jetr == 3 )) { for(int j=0; j<3; j++)

{ jetmomentum[j] = Jn[j].A4V(); // calculate the multiplicity

Page 13: 14.9.99Maria Hoerndl, ALPHA++1 My work project Add simple kinematics functions and then more complex routines like Thrust and Jet algorithms to the ALPHA++

14.9.99 Maria Hoerndl, ALPHA++ 13

Example Analysis program

for(ObjItr it1 = Jn[j].getObjects().begin(); it1 <Jn[j].getObjects().end(); it1 ++)

{ int type = ((AlEflw*)(*it1))->getEfType(); if (type <=3) { multiplicity[j]++; } } } // sort multiplicity and jetmomentum in order of decreasing energy // calculate the interjetangles interjetangle[0]=jetmomentum[0].angle( Hep3Vector(jetmomentum[1])); interjetangle[1] = ……. interjetangle[2] = …... // fill the rest of the ntuple array } // of if 3jet } // of for over ycuts // fill the ntuple array into the ntuple } // of if good event fout << endl << " =====> in UserEvent " << Nev << endl;}

data output agrees with that from ALPHA !

Page 14: 14.9.99Maria Hoerndl, ALPHA++1 My work project Add simple kinematics functions and then more complex routines like Thrust and Jet algorithms to the ALPHA++

14.9.99 Maria Hoerndl, ALPHA++ 14

Jet energies

Page 15: 14.9.99Maria Hoerndl, ALPHA++1 My work project Add simple kinematics functions and then more complex routines like Thrust and Jet algorithms to the ALPHA++

14.9.99 Maria Hoerndl, ALPHA++ 15

Jet multiplicities

Page 16: 14.9.99Maria Hoerndl, ALPHA++1 My work project Add simple kinematics functions and then more complex routines like Thrust and Jet algorithms to the ALPHA++

14.9.99 Maria Hoerndl, ALPHA++ 16

Jet Rates

Page 17: 14.9.99Maria Hoerndl, ALPHA++1 My work project Add simple kinematics functions and then more complex routines like Thrust and Jet algorithms to the ALPHA++

14.9.99 Maria Hoerndl, ALPHA++ 17

Gluon jets

Page 18: 14.9.99Maria Hoerndl, ALPHA++1 My work project Add simple kinematics functions and then more complex routines like Thrust and Jet algorithms to the ALPHA++

14.9.99 Maria Hoerndl, ALPHA++ 18

Quark jets

Page 19: 14.9.99Maria Hoerndl, ALPHA++1 My work project Add simple kinematics functions and then more complex routines like Thrust and Jet algorithms to the ALPHA++

14.9.99 Maria Hoerndl, ALPHA++ 19

Analysis of the Quark jets

Page 20: 14.9.99Maria Hoerndl, ALPHA++1 My work project Add simple kinematics functions and then more complex routines like Thrust and Jet algorithms to the ALPHA++

14.9.99 Maria Hoerndl, ALPHA++ 20

Analysis of the Quark jets

Page 21: 14.9.99Maria Hoerndl, ALPHA++1 My work project Add simple kinematics functions and then more complex routines like Thrust and Jet algorithms to the ALPHA++

14.9.99 Maria Hoerndl, ALPHA++ 21

Summary

most important algorithms have been implemented

“usability” has been shown via realistic QCD analysis

agreement with Fortran

to be done: detailed performance study