1 / 21

My work project

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

sawyer
Download Presentation

My work project

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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++ Maria Hoerndl, ALPHA++

  2. ALPHA++ Class Diagram 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(); 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 ….. ….. Maria Hoerndl, ALPHA++

  5. Class AlThrust class AlThrust: public QvecBase { public: AlThrust(); // default constructor ALEPHTYPE TYPE() {return ALTHRUST;} Hep3Vector getThrustDirection(); float getThrustValue(); }; Maria Hoerndl, ALPHA++

  6. Class AlJet class 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 }; Maria Hoerndl, ALPHA++

  7. Class AlephAlgo class 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; }; 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 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(); } } 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(); } } } 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(); 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 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 ! Maria Hoerndl, ALPHA++

  14. Jet energies Maria Hoerndl, ALPHA++

  15. Jet multiplicities Maria Hoerndl, ALPHA++

  16. Jet Rates Maria Hoerndl, ALPHA++

  17. Gluon jets Maria Hoerndl, ALPHA++

  18. Quark jets Maria Hoerndl, ALPHA++

  19. Analysis of the Quark jets Maria Hoerndl, ALPHA++

  20. Analysis of the Quark jets 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 Maria Hoerndl, ALPHA++

More Related